/*
 * @Description: 
 * @Author: Wen
 * @Date: 2024-11-18 16:59:33
 * @LastEditors: Wen
 * @LastEditTime: 2024-11-19 14:35:23
 * 太棒了，又坚持了一天
 */
import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcTest{
       // 数据库四要素
        // 1.驱动
        String driver = "com.mysql.jdbc.Driver";
        // 2.数据库地址
        String url = "jdbc:mysql://127.0.0.1:3306/briup";
        // 3.用户名
        String username = "root";
        // 4.密码
        String password = "1234";
        // 获取数据库连接 并输出对象
        @Test
        public void getConnection(){
            Connection conn =null;
            try {
                // 注册驱动
                Class.forName(driver);
                // 获取连接对象
                conn= DriverManager.getConnection(url, username, password);
                // 输出连接对象
                System.out.println(conn);
            }catch(Exception e){
                e.printStackTrace();
            }finally{
                // 6.释放资源
                if(conn!=null){
                    try{
                        conn.close();
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
            }
        }
        // 删除表
        @Test
        public void dropTable(){
            // conn连接对象
            Connection conn =null; 
            // 数据库操作对象
            Statement stmt = null;
            try{
                // 加载
                Class.forName(driver);
                // 获取连接对象
                conn=DriverManager.getConnection(url, username, password);
                // 获取操作对象
                stmt=conn.createStatement();
                // 执行sql语句
                int rows=stmt.executeUpdate("DROP TABLE IF EXISTS t_user");
                // 5.处理结果
                System.out.println("返回结果rows:"+rows);
            }catch(Exception e){
                // 释放资源
                if (stmt != null) {
                    try {
                    stmt.close();
                    } catch (Exception err) {
                    err.printStackTrace();
                    }
                    }
                    if (conn != null) {
                        try {
                        conn.close();
                        } catch (Exception err) {
                        err.printStackTrace();
                        }
                    }
                    }
            
        }
        // 创建表
        @Test
        public void createTable() {
            // 数据库连接对象
            Connection conn = null;
            // 数据库操作对象
            Statement stmt = null;
            try {
                // 1. 加载驱动
                Class.forName(driver);
                // 2. 获取连接对象
                conn = DriverManager.getConnection(url, username, password);
                // 3. 获取操作对象
                stmt = conn.createStatement();
                // 4. 执行sql语句
                String sql = "create table t_user("
                        + "id INTEGER PRIMARY KEY,"
                        + "name VARCHAR(50) NOT NULL,"
                        + "age INTEGER"
                        + ")";
                int rows = stmt.executeUpdate(sql);
                // 5. 处理结果
                System.out.println("返回结果rows：" + rows);
            } catch (Exception e) {
                // 释放资源
                if (stmt != null) {
                    try {
                        stmt.close();
                    } catch (Exception err) {
                        err.printStackTrace();
                    }
                }
                if (conn != null) {
                    try {
                        conn.close();
                    } catch (Exception err) {
                        err.printStackTrace();
                    }
                }
            }
        }
        // 插入数据
        @Test
        public void insertData() {
            Connection conn = null;
            Statement stmt = null;
            try {
                // 1. 加载驱动
                Class.forName(driver);
                // 2. 获取连接对象
                conn = DriverManager.getConnection(url, username, password);
                // 3. 获取操作对象
                stmt = conn.createStatement();
                // 4. 执行sql语句
                String sql = "insert into t_user(id,name,password,age) values(1,'tom',2345,20)";
                //String sql = "insert into t_user(id,name,password,age) values(2,'李四',1234,22)";
                int rows = stmt.executeUpdate(sql);
                // 5. 处理结果
                System.out.println("修改的行数 rows：" + rows);
            } catch (Exception e) {
                // 6. 释放资源
                if (stmt != null) {
                    try {
                        stmt.close();
                    } catch (Exception exc) {
                        exc.printStackTrace();
                    }
                }
                if (conn != null) {
                    try {
                        conn.close();
                    } catch (Exception exc) {
                        exc.printStackTrace();
                    }
                }
            }
        }
        //更新数据
        @Test
        public void updateData(){
            // 数据库连接对象
            Connection conn = null;
            // 数据库操作对象
            Statement stmt = null;
            try {
                // 1. 加载驱动
                Class.forName(driver);
                // 2. 获取连接对象
                conn = DriverManager.getConnection(url, username, password);
                // 3. 获取操作对象
                stmt = conn.createStatement();
                // 4. 执行sql语句
                String sql = "update t_user set name ='张三' where id =1";
                int rows = stmt.executeUpdate(sql);
                // 5. 处理结果
                System.out.println("返回结果rows：" + rows);
            } catch (Exception e) {
                // 释放资源
                if (stmt != null) {
                    try {
                        stmt.close();
                    } catch (Exception err) {
                        err.printStackTrace();
                    }
                }
                if (conn != null) {
                    try {
                        conn.close();
                    } catch (Exception err) {
                        err.printStackTrace();
                    }
                }
            }

        }
        //删除数据
        @Test
        public void DeleteData(){
            // 数据库连接对象
            Connection conn = null;
            // 数据库操作对象
            Statement stmt = null;
            try {
                // 1. 加载驱动
                Class.forName(driver);
                // 2. 获取连接对象
                conn = DriverManager.getConnection(url, username, password);
                // 3. 获取操作对象
                stmt = conn.createStatement();
                // 4. 执行sql语句
                String sql = "delete from t_user where id =1";
                int rows = stmt.executeUpdate(sql);
                // 5. 处理结果
                System.out.println("返回结果rows：" + rows);
            } catch (Exception e) {
                // 释放资源
                if (stmt != null) {
                    try {
                        stmt.close();
                    } catch (Exception err) {
                        err.printStackTrace();
                    }
                }
                if (conn != null) {
                    try {
                        conn.close();
                    } catch (Exception err) {
                        err.printStackTrace();
                    }
                }
            }

        }
        //查询user表中数据
        @Test
        public void getData(){
            // 数据库连接对象
            Connection conn = null;
            // 数据库操作对象
            Statement stmt = null;
            ResultSet rs = null;
            try {
                // 1. 加载驱动
                Class.forName(driver);
                // 2. 获取连接对象
                conn = DriverManager.getConnection(url, username, password);
                // 3. 获取操作对象
                stmt = conn.createStatement();
                // 4. 执行sql语句
                String sql = "select * from t_user where  birthday<='2020-01-01'";
                //ResultSet rows=stmt.executeQuery("select * from t_customer where birthday < '2000-1-1'");
                rs = stmt.executeQuery(sql);
                //注意这里执行的是查询语句
                // 5. 处理结果
//                while(rs.next()){
//                    //通过id获取数据(列名)
//                   //int id = rs.getInt("id");
//                   // System.out.println("id:"+id);
//                    //返回值是数值
//                    int count = rs.getInt(1);
//                    System.out.println(("count:"+count));
//                    if(count == 1){
//                        System.out.println("登录成功");
//                    }else{
//                        System.out.println("密码错误，登录失败");
//                    }
//
//                }
                } catch (Exception e) {
                // 6.释放资源
                if (rs != null) {
                    try {
                        rs.close();
                    } catch (Exception err) {
                        err.printStackTrace();
                    }
                }
                if (stmt != null) {
                    try {
                        stmt.close();
                    } catch (Exception err) {
                        err.printStackTrace();
                    }
                }
                if (conn != null) {
                    try {
                        conn.close();
                    } catch (Exception err) {
                        err.printStackTrace();
                    }
                }
            }

        }
        //增加密码列
        @Test
        public void addPassword(){
            // 数据库连接对象
            Connection conn = null;
            // 数据库操作对象
            Statement stmt = null;
            try {
                // 1. 加载驱动
                Class.forName(driver);
                // 2. 获取连接对象
                conn = DriverManager.getConnection(url, username, password);
                // 3. 获取操作对象
                stmt = conn.createStatement();
                //删除之前的数据
                //delete from t_user
                // 4. 执行sql语句
                String sql = "alter  table t_user add column password varchar(20) not null after name";
                int rows = stmt.executeUpdate(sql);
                // 5. 处理结果
                System.out.println("返回结果rows：" + rows);
            } catch (Exception e) {
                // 释放资源
                if (stmt != null) {
                    try {
                        stmt.close();
                    } catch (Exception err) {
                        err.printStackTrace();
                    }
                }
                if (conn != null) {
                    try {
                        conn.close();
                    } catch (Exception err) {
                        err.printStackTrace();
                    }
                }
            }
        }
        // 登录
        @Test
        public void login() {
            Connection conn = null;
            Statement stmt = null;
            ResultSet rs = null;
            try {
            // 1. 加载驱动
            Class.forName(driver);
            // 2. 获取连接对象
            conn = DriverManager.getConnection(url, username, password);
            // 3. 获取操作对象
            stmt = conn.createStatement();
            // 用户输入的内容
            int userId = 1;
            // 用户输入的内容
            String userPwd = "'or '1'='1";
            // 4. 执行sql语句
            //String sql = "select count(*) from t_user where id=" + userId + " and password='" + userPwd + "'";
            String sql = "select count(*) from t_user where id=1 and password='tom'";
            //String sql = "select count(*) from t_user where birthday<='2000-01-01'";

            System.out.println("sql:" + sql);
            rs = stmt.executeQuery(sql); // 注意这里执行的是查询语句
            // 5. 处理结果
            while (rs.next()) {
                // 返回值是数值
                int count = rs.getInt(1);
                System.out.println("count: " + count);
                if (count == 0) {
                System.out.println("登录失败");
                } else {
                System.out.println("登录成功");
                }
            }
            } catch (Exception e) {
            // 6. 释放资源
            if (rs != null) {
                try {
                rs.close();
                } catch (Exception exc) {
                exc.printStackTrace();
                }
            }
            if (stmt != null) {
                try {
                stmt.close();
                } catch (Exception exc) {
                exc.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                conn.close();
                } catch (Exception exc) {
                exc.printStackTrace();
                }
            }
            }
        }
}
    
